/**
 * Javascript Language Pack Manager
 */

var $L = {

    /**
     * 언어팩 배열
     */
    _lang : {},

    /**
     * 비어있는 문자인지 판단
     */
    _isEmpty : function(val) {

        if (!val) return true;
        if (val == null) return true;
        if (val == undefined) return true;
        if (val == '') return true;

        return false;

    },

    /**
     * 앞뒤 공백 제거
     */
    _trim : function(str) {
        if(typeof str != 'string') return '';

        return str.replace(/(^\s*)|(\s*$)/g, '');
    },

    /**
     * 메소드 상속
     */
    _apply : function(method, func) {

        this[method] = func;

    },

    /**
     * 언어팩 등록
     */
    regist : function(nspace, lang) {

        if (this._isEmpty(nspace)) return false;
        if (typeof lang != 'object') return false;

        this._lang[nspace] = lang;

        return true;

    },

    /**
     * 지정된 오브젝트로 언어팩 메소드 등록
     */
    bind : function(obj, nspace) {

        if (typeof obj != 'object') return false;
        if (this._isEmpty(nspace)) return false;

        var self = this;

        this._apply.call(obj, '$L', function(key){

            return self.get(nspace, key);

        });

        return true;

    },

    /**
     * 불러오기
     */
    get : function(nspace, key) {

        return this._lang[nspace][key];

    }
};
